﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ReportManagement;
using MvcReportGeneratorDemo.Models;
using blacksoft.Models;
namespace blacksoft.Controllers
{
    public class HistorialViajeController : PdfViewController
    {
        //
        // GET: /HistorialViaje/

        private inf245travelbusEntities db = new inf245travelbusEntities();

        public ActionResult Index() {
            return View();
        }
        public ActionResult ReporteHistorialViaje()
        {
            var model = new HistorialViajeDataModel();
            try {
                var historial = (from r in db.Reserva.ToList()
                                 join p in db.Pasaje.ToList() on r.IDReserva equals p.IDReserva
                                 join a in db.ProgramacionViaje.ToList() on p.IDProgramacionViaje equals a.IDProgramacionViaje
                                 join rp in db.Ruta_x_UnidadTransporte.ToList() on a.IdRuta_x_UnidadTransporte equals rp.IdRuta_x_UnidadTransporte
                                 join x in db.Ruta.ToList() on rp.IDRuta equals x.IDRuta
                                 join per in db.Persona.ToList() on p.IDPersona.Value equals per.IDPersona
                                 where p.IDPersona == Convert.ToInt32(Session[blacksoft.Constantes.SystemField.SESION_CODIGO_PERSONA])
                                 select new HistorialViajeModel() { nombrePasajero = string.Format("{0} {1}", p.Nombre, p.ApellidoPaterno), origen = x.Origen, destino = x.Destino, fechaViaje = r.FechaSalida.Value.ToShortDateString(), montoPasaje = (p.MontoPago == null)? 0 : p.MontoPago.Value, puntosAcumulados = ((per.PuntosAcumulados == null) ? 0 : per.PuntosAcumulados.Value).ToString(), puntosAGanar = x.PuntosAGanar.Value.ToString(), EstadoReserva = (r.Estado == "AC") ? "Reserva activo" : ((r.Estado == "AN") ? "Anulado" : "Pagado") }).ToList();

                model.fechaDia = DateTime.Now.ToShortDateString();
                model.Pasajero = historial.First().nombrePasajero.ToString().ToUpper();
                model.NumerosPuntos = historial.First().puntosAcumulados.ToString();
                FillImageUrl(model, "pucp.jpg");
                model.historial = historial;
                return this.ViewPdf("", "ReporteHistorialViaje", model);
            } catch (Exception) {
                model.Pasajero = (db.Persona.ToList().Where(c => c.IDPersona == Convert.ToInt32(Session[blacksoft.Constantes.SystemField.SESION_CODIGO_PERSONA])).First().Nombre.ToString() + " " + db.Persona.ToList().Where(c => c.IDPersona == Convert.ToInt32(Session[blacksoft.Constantes.SystemField.SESION_CODIGO_PERSONA])).First().ApellidoPaterno.ToString()).ToUpper();
                model.NumerosPuntos = "0";
                FillImageUrl(model, "pucp.jpg");
                return this.ViewPdf("", "ReporteHistorialViaje", model);
            }
        }

        private void FillImageUrl(HistorialViajeDataModel modelo, string imageName)
        {
            string url = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
            modelo.ImageUrl = url + "Content/" + imageName;
        }

	}
}